/* eslint-disable no-unused-vars */
import router from './router'
import store from './store'
import { Message } from 'element-ui';
import { getToken } from '@/utils/auth' // get token from cookie

const whiteList = ['/login','/home','/register'] // 登录白名单,也就是不需要登录就可以访问的页面

router.beforeEach(async(to, from, next) => {
    //to 将要访问的路径 from 从哪个路径跳转而来 next 是一个函数，表示放行
    //next()//为了测试可以先全部放行
    // 获取当前用户token,来判断是否登录
    let hasToken = getToken()
    if (hasToken) { // 如果有token
        if (to.path === '/login') { // 如果已经登录还想去login页面,则直接跳转到首页
            Message.warning({
                showClose: true,
                message: '当前已经登录',
            })
            next('/')
        }else{//如果已经登录但是去的不是login页面,就判断是否有用户信息
            let hasRoles = store.state.user.userInfo.name//获取用户信息
            if(hasRoles){//如果有用户信息,就直接放行
                next()
            }else{//如果没有用户信息,就去请求用户信息
                try{
                    await store.dispatch('getUserInfo')
                    next()
                }catch(error){//token过期,清除token,跳转到登录页面
                    await store.dispatch('userLogout')
                    next('/login')
                }
            }
        }
    } else { // 没有token,未登录
        if (whiteList.indexOf(to.path) !== -1) { // 就判断要去的路由页面是不是在白名单中,如果是直接进入
            next()
        } else { // 如果不是,就跳转到登录页面
            next(`/login?redirect=${to.path}`)//to.path记录退出之前的页面,方便登录之后直接进入退出之前的页面
        }
    }
})

router.afterEach(() => {

})
